<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This file documents the use of the GNU compilers.

Copyright © 1988-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<title>Floating point implementation (Using the GNU Compiler Collection (GCC))</title>

<meta name="description" content="Floating point implementation (Using the GNU Compiler Collection (GCC))">
<meta name="keywords" content="Floating point implementation (Using the GNU Compiler Collection (GCC))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Indices.html" rel="index" title="Indices">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="C-Implementation.html" rel="up" title="C Implementation">
<link href="Arrays-and-pointers-implementation.html" rel="next" title="Arrays and pointers implementation">
<link href="Integers-implementation.html" rel="prev" title="Integers implementation">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
kbd.key {font-style: normal}
span:hover a.copiable-link {visibility: visible}
ul.mark-bullet {list-style-type: disc}
-->
</style>


</head>

<body lang="en_US">
<div class="section-level-extent" id="Floating-point-implementation">
<div class="nav-panel">
<p>
Next: <a href="Arrays-and-pointers-implementation.html" accesskey="n" rel="next">Arrays and Pointers</a>, Previous: <a href="Integers-implementation.html" accesskey="p" rel="prev">Integers</a>, Up: <a href="C-Implementation.html" accesskey="u" rel="up">C Implementation-Defined Behavior</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h3 class="section" id="Floating-Point"><span>4.6 Floating Point<a class="copiable-link" href="#Floating-Point"> &para;</a></span></h3>

<ul class="itemize mark-bullet">
<li><cite class="cite">The accuracy of the floating-point operations and of the library
functions in <code class="code">&lt;math.h&gt;</code> and <code class="code">&lt;complex.h&gt;</code> that return floating-point
results (C90, C99 and C11 5.2.4.2.2).</cite>

<p>The accuracy is unknown.
</p>
</li><li><cite class="cite">The rounding behaviors characterized by non-standard values
of <code class="code">FLT_ROUNDS</code>
(C90, C99 and C11 5.2.4.2.2).</cite>

<p>GCC does not use such values.
</p>
</li><li><cite class="cite">The evaluation methods characterized by non-standard negative
values of <code class="code">FLT_EVAL_METHOD</code> (C99 and C11 5.2.4.2.2).</cite>

<p>GCC does not use such values.
</p>
</li><li><cite class="cite">The direction of rounding when an integer is converted to a
floating-point number that cannot exactly represent the original
value (C90 6.2.1.3, C99 and C11 6.3.1.4).</cite>

<p>C99 Annex F is followed.
</p>
</li><li><cite class="cite">The direction of rounding when a floating-point number is
converted to a narrower floating-point number (C90 6.2.1.4, C99 and C11
6.3.1.5).</cite>

<p>C99 Annex F is followed.
</p>
</li><li><cite class="cite">How the nearest representable value or the larger or smaller
representable value immediately adjacent to the nearest representable
value is chosen for certain floating constants (C90 6.1.3.1, C99 and C11
6.4.4.2).</cite>

<p>C99 Annex F is followed.
</p>
</li><li><cite class="cite">Whether and how floating expressions are contracted when not
disallowed by the <code class="code">FP_CONTRACT</code> pragma (C99 and C11 6.5).</cite>

<p>Expressions are currently only contracted if <samp class="option">-ffp-contract=fast</samp>,
<samp class="option">-funsafe-math-optimizations</samp> or <samp class="option">-ffast-math</samp> are used.
This is subject to change.
</p>
</li><li><cite class="cite">The default state for the <code class="code">FENV_ACCESS</code> pragma (C99 and C11
7.6.1).</cite>

<p>This pragma is not implemented, but the default is to &ldquo;off&rdquo; unless
<samp class="option">-frounding-math</samp> is used and <samp class="option">-fno-trapping-math</samp> is not
in which case it is &ldquo;on&rdquo;.
</p>
</li><li><cite class="cite">Additional floating-point exceptions, rounding modes, environments,
and classifications, and their macro names (C99 and C11 7.6, C99 and
C11 7.12).</cite>

<p>This is dependent on the implementation of the C library, and is not
defined by GCC itself.
</p>
</li><li><cite class="cite">The default state for the <code class="code">FP_CONTRACT</code> pragma (C99 and C11
7.12.2).</cite>

<p>This pragma is not implemented.  Expressions are currently only
contracted if <samp class="option">-ffp-contract=fast</samp>,
<samp class="option">-funsafe-math-optimizations</samp> or <samp class="option">-ffast-math</samp> are used.
This is subject to change.
</p>
</li><li><cite class="cite">Whether the &ldquo;inexact&rdquo; floating-point exception can be raised
when the rounded result actually does equal the mathematical result
in an IEC 60559 conformant implementation (C99 F.9).</cite>

<p>This is dependent on the implementation of the C library, and is not
defined by GCC itself.
</p>
</li><li><cite class="cite">Whether the &ldquo;underflow&rdquo; (and &ldquo;inexact&rdquo;) floating-point
exception can be raised when a result is tiny but not inexact in an
IEC 60559 conformant implementation (C99 F.9).</cite>

<p>This is dependent on the implementation of the C library, and is not
defined by GCC itself.
</p>
</li></ul>

</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Arrays-and-pointers-implementation.html">Arrays and Pointers</a>, Previous: <a href="Integers-implementation.html">Integers</a>, Up: <a href="C-Implementation.html">C Implementation-Defined Behavior</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
